package ru.compft.web.validator;

import org.springframework.context.MessageSource;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
import ru.compft.common.utils.GlobalErrors;
import ru.compft.web.beans.LoginFormBean;

import javax.annotation.Resource;

/**
 * User: ASUS
 * Date: 09.08.12
 * Time: 21:00
 * Валидатор для формы входа в систему
 */
@Component("loginFormBeanValidator")
public class LoginFormBeanValidator implements Validator {

    public static final String USER_NAME = "userName";
    public static final String PASSWORD = "password";

    @Resource(name = "messageSource")
    private MessageSource messageSource;

    @Override
    public boolean supports(Class<?> clazz) {
        return LoginFormBean.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        // Локализованное название поля userName
        final String localizedUserName = messageSource.getMessage(USER_NAME, null, LocaleContextHolder.getLocale());
        // Локализованное название поля password
        final String localizedPassword = messageSource.getMessage(PASSWORD, null, LocaleContextHolder.getLocale());

        ValidationUtils.rejectIfEmptyOrWhitespace(errors, USER_NAME, GlobalErrors.FIELD_REQUIRED, new String[]{localizedUserName});
        ValidationUtils.rejectIfEmptyOrWhitespace(errors, PASSWORD, GlobalErrors.FIELD_REQUIRED, new String[]{localizedPassword});
    }
}
